
const path = require('path');

module.exports = appInfo => {

  //todo 加()啥意思 ？？
  const config = (exports = {});

  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_1629120257031_557';

  // add your middleware config here
  config.middleware = [];

  // fixme??? add your user config here
  config.userConfig = {
    secret: 'im-server'
  };



  /**
   * todo 框架提供了 egg-socket.io 插件， 增加了以下开发规约：
   namespace: 通过配置的方式定义 namespace（ 命名空间）
   middleware: 对每一次 socket 连接的建立/断开、 每一次消息/数据传递进行预处理
   controller: 响应 socket.io 的 event 事件
   router: 统一了 socket.io 的 event 与 框架路由的处理配置方式*/
  config.io = {
    namespace: {
      '/': {
        connectionMiddleware: [ 'auth' ],
        packetMiddleware: [ 'packet' ]
      }
    }
    //todo 在config.io里面配置redis  socket消息放在redis里？？？

    // redis: {
    //   host: '101.34.55.248',
    //   port: 6379,
    //   auth_pass: 'Redis1207$',
    //   db: 0
    // }
  };
  // config.redis = {
  //   client: {
  //     port: 6379,
  //     host: '127.0.0.1',
  //     password: '123456',
  //     db: 0
  //   }
  // };
  // TODO 在 config/config.default.js 中编写 sequelize 配置
  config.sequelize = {
    //todo 时区+08:00
    timezone: '+08:00',
    dialect: 'mysql',
    host: '101.34.55.248',
    port: 3306,
    database: 'im-db',
    username: 'root',
    password: '123456',
    //todo 有时你想指定一个 dialectOption,如果它是一个通用配置,你可以将其添加到
    // config/config.json 中. 有时你想执行一些代码来获取 dialectOptions,你应该为这些情况
    // 使用动态配置文件
    dialectOptions: {
      dateStrings: true,
      typeCast: true
    }
  };
    //todo 关闭csrf校验 不然postman无法测试
    config.security = {
         csrf: false
       };
  //TODO 创建一个 GitHub OAuth Apps， 得到 clientID 和 clientSecret 信息
  //fixme ????key secret从何而来
  config.passportGithub = {
    key: '6a295fd08ea8affe1e75',
    secret: '14b892e4f36cf08303f40553bc24fcbae61aa4bb',
    callbackURL: '/v1/passport/github/callback'
  };
  //TODO 日志logger配置
  config.logger = {
    dir: path.join(appInfo.baseDir, 'logs', appInfo.name),
    consoleLevel: 'DEBUG'
  };
  //todo 文件上传
  config.multipart = {
    mode: 'file'
  };

  return {
    ...config,

  };
};
